package com.xhh.nphm.gaoxin.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xhh.nphm.common.core.domain.QueryConditionVo;
import com.xhh.nphm.gaoxin.entity.GxqTwfSendBackEty;
import com.xhh.nphm.gaoxin.entity.GxqTworkFormBaseEty;
import com.xhh.nphm.gaoxin.entity.GxqTworkFormLogEty;
import com.xhh.nphm.gaoxin.mapper.GxqTworkFormLogDao;
import com.xhh.nphm.gaoxin.mapper.GxqWorkFormBaseDao;
import com.xhh.nphm.gaoxin.service.GxqIWorkFormBaseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class GxqWorkFormBaseServiceImpl extends ServiceImpl<GxqWorkFormBaseDao, GxqTworkFormBaseEty> implements GxqIWorkFormBaseService {
    @Autowired
    private GxqWorkFormBaseDao GxqWorkFormBaseDao;
    @Autowired
    private GxqTworkFormLogDao GxqTworkFormLogDao;


    /**
     * 创建工单
     *
     * @param GxqTworkFormBaseEty
     * @return
     */
    @Override
    public int insert(GxqTworkFormBaseEty GxqTworkFormBaseEty) {
        String fromName = GxqTworkFormBaseEty.getFromName();
        String dcntAname = GxqTworkFormBaseEty.getDcntAname();
        String dfmClaName = GxqTworkFormBaseEty.getDfmClaName();
        GxqTworkFormBaseEty.setWsTopic(fromName+"["+dcntAname +"]" +dfmClaName);
        int insert = GxqWorkFormBaseDao.insert(GxqTworkFormBaseEty);
        GxqTworkFormLogEty GxqTworkFormLogEty = GxqTworkFormBaseEty.getTworkFormLogEty();
        GxqTworkFormLogEty.setWfId(GxqTworkFormBaseEty.getPkId());
        GxqTworkFormLogDao.insert(GxqTworkFormLogEty);
        return insert;
    }

    /**
     * 根据来电记录id查询工单
     *
     * @param
     * @return
     */
    @Override
    public GxqTworkFormBaseEty selectByGetDealPk(Integer getDealPk) {
        return GxqWorkFormBaseDao.selectByGetDealPk(getDealPk);
    }

    /**
     *  派单 修改工单状态的
     *
     * @param GxqTworkFormBaseEty
     * @return
     */
    @Override
    public int updateWork(GxqTworkFormBaseEty GxqTworkFormBaseEty) {
        return GxqWorkFormBaseDao.updateById(GxqTworkFormBaseEty);
    }

    /**
     * 获取电话工单初稿列表数据
     *
     * @return 电话工单初稿列表数据
     */
    @Override
    public List<GxqTworkFormBaseEty> findTwfDraftList(GxqTworkFormBaseEty twfb) {
        return GxqWorkFormBaseDao.findTwfDraftList(twfb);
    }

    /**
     * 修改电话工单
     *
     * @param GxqTworkFormBaseEty 工单数据
     * @param GxqTworkFormLogEty  操作日志
     * @return
     */
    @Override
    public int saveWorkForm(GxqTworkFormBaseEty GxqTworkFormBaseEty, GxqTworkFormLogEty GxqTworkFormLogEty) {
        int update = GxqWorkFormBaseDao.updateById(GxqTworkFormBaseEty);
        GxqTworkFormLogEty.setWfId(GxqTworkFormBaseEty.getPkId());
        int insert = GxqTworkFormLogDao.insert(GxqTworkFormLogEty);
        return insert;
    }

    @Override
    public GxqTworkFormBaseEty selectByPkId(Integer id) {
        return GxqWorkFormBaseDao.selectByPkId(id);
    }

    /**
     * 撤回承办单位处理中的工单
     * @param twfb 工单信息
     * @param twfl 工单操作日志
     * @return 操作结果
     */
    @Override
    public int sendBack(GxqTworkFormBaseEty twfb,GxqTworkFormLogEty twfl) {
        int res = GxqTworkFormLogDao.insert(twfl);
        res = GxqWorkFormBaseDao.updateById(twfb);
        return res;
    }

    /**
     * 获取网评不满意的工单记录
     *
     * @return 工单记录列表
     */
    @Override
    public List<GxqTworkFormBaseEty> findBadCommentTwfbList(GxqTworkFormBaseEty twfb) {
        return GxqWorkFormBaseDao.findBadCommentTwfbList(twfb);
    }



    /**
     * 已回访工单列表数据
     * @param GxqTworkFormBaseEty
     * @return
     */
    @Override
    public List<GxqTworkFormBaseEty> backOverListJson(GxqTworkFormBaseEty GxqTworkFormBaseEty) {
        return GxqWorkFormBaseDao.backOverListJson(GxqTworkFormBaseEty);
    }

    /**
     * 被退回电话工单列表数据
     * @param GxqTworkFormBaseEty
     * @return
     */
    @Override
    public List<GxqTworkFormBaseEty> backFlowJson(GxqTworkFormBaseEty GxqTworkFormBaseEty) {
        return GxqWorkFormBaseDao.backFlowJson(GxqTworkFormBaseEty);
    }

    /**
     * 待审办理结果列表数据
     * @param GxqTworkFormBaseEty
     * @return
     */
    @Override
    public List<GxqTworkFormBaseEty> replyWaitJson(GxqTworkFormBaseEty GxqTworkFormBaseEty) {
        return GxqWorkFormBaseDao.replyWaitJson(GxqTworkFormBaseEty);
    }

    /**
     * 重点诉求推荐列表数据
     *
     * @param GxqTwfSendBackEty 拟派工单
     * @return 重点诉求推荐列表数据
     */
    @Override
    public List<Map<String, Object>> keyTwfRecommendListJson(GxqTwfSendBackEty GxqTwfSendBackEty) {
        return GxqWorkFormBaseDao.keyTwfRecommendListJson(GxqTwfSendBackEty);
    }

    /**
     * 被诉主体列表
     *  根据热度排序
     * @return
     */
    @Override
    public List<String> hotSpotAccSubjects() {
        return GxqWorkFormBaseDao.hotSpotAccSubjects();
    }

    /**
     * 热点诉求推荐列表数据
     *
     * @param GxqTworkFormBaseEty 根据工单实体(被诉主体)查询
     * @return
     */
    @Override
    public List<Map<String, Object>> hotSpotRecommendListJson(GxqTworkFormBaseEty GxqTworkFormBaseEty) {
        return GxqWorkFormBaseDao.hotSpotRecommendListJson(GxqTworkFormBaseEty);
    }

    /**
     * 近期热点事件推送列表数据
     *
     * @param GxqTworkFormBaseEty 查询条件
     * @return 列表数据
     */
    @Override
    public List<Map<String, Object>> nearHotSpotTwfRecommendListJson(GxqTworkFormBaseEty GxqTworkFormBaseEty) {
        return getBaseMapper().nearHotSpotTwfRecommendListJson(GxqTworkFormBaseEty);
    }

    /**
     * 近期典型事件推送列表数据
     *
     * @param GxqTworkFormBaseEty 查询条件
     * @return 列表数据
     */
    @Override
    public List<Map<String, Object>> nearTypicalTwfRecommendListJson(GxqTworkFormBaseEty GxqTworkFormBaseEty) {
        return getBaseMapper().nearTypicalTwfRecommendListJson(GxqTworkFormBaseEty);
    }

    /**
     * 特殊诉求列表数据
     *
     * @param GxqTworkFormBaseEty 查询条件
     * @return 列表数据
     */
    @Override
    public List<Map<String, Object>> specialTwfRecommendListJson(GxqTworkFormBaseEty GxqTworkFormBaseEty) {
        return getBaseMapper().specialTwfRecommendListJson(GxqTworkFormBaseEty);
    }

    /**
     * 典型诉求列表数据
     *
     * @param GxqTworkFormBaseEty 查询条件
     * @return 列表数据
     */
    @Override
    public List<Map<String, Object>> typicalTwfRecommendListJson(GxqTworkFormBaseEty GxqTworkFormBaseEty) {
        return getBaseMapper().typicalTwfRecommendListJson(GxqTworkFormBaseEty);
    }

    /**
     * 待回访电话工单列表数据
     * @param GxqTworkFormBaseEty
     * @return
     */
    @Override
    public List<Map<String,Object>> backWaitListJson(GxqTworkFormBaseEty GxqTworkFormBaseEty) {
        return GxqWorkFormBaseDao.backWaitListJson(GxqTworkFormBaseEty);
    }

    /**
     * 根据事发地址 查询电话工单
     * @param fmAddress
     * @return
     */
    @Override
    public List<GxqTworkFormBaseEty> telfmAddressJson(String fmAddress) {
        return GxqWorkFormBaseDao.telfmAddressJson(fmAddress);
    }

    /**
     * 根据被诉主体 查询电话工单
     * @param accSubject
     * @return
     */
    @Override
    public List<GxqTworkFormBaseEty> telaccSubjectJson(String accSubject) {
        return GxqWorkFormBaseDao.telaccSubjectJson(accSubject);
    }

    /**
     * 根据用户角色编号和部门编号 查询全区实时满意情况
     *
     * @param roleId 角色编号
     * @param deptId 部门编号
     * @return List<Map>
     */
    @Override
    public List<Map> psTelTotalHandleState(String roleId, String deptId, boolean flag) {
        Map<String,String> params = new HashMap<>(2);
        params.put("roleId",roleId);
        params.put("deptId",deptId);
        if (flag){
            return getBaseMapper().psTelTotalHandleState_gxq(params);
        }else{
            return getBaseMapper().psTelTotalHandleState(params);
        }
    }

    /**
     * 查看已删除工单详情
     * @param pkId
     * @return
     */
    @Override
    public GxqTworkFormBaseEty getByPkId(Integer pkId) {
        return GxqWorkFormBaseDao.getByPkId(pkId);
    }

    @Override
    public GxqTworkFormBaseEty getByWorkNo(String workNo) {
        List<GxqTworkFormBaseEty> list=GxqWorkFormBaseDao.getByWorkNo(workNo);
        if(list.size()>0){
            return list.get(0);
        }
        return null;
    }

    /**
     * 查询电话紧急联系调整
     * @return
     */
    @Override
    public List<Map<String,Object>> wfListBankName(QueryConditionVo qc) {
        return GxqWorkFormBaseDao.wfListBankName(qc);
    }
}
